package com.lwei.tallybook.service.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.lwei.tallybook.base.domain.AccountBookBill;
import com.lwei.tallybook.base.dto.AccountBillDTO;
import com.lwei.tallybook.service.vo.response.BillResponseVO;

import java.util.Date;

/**
 *  账单 bill
 * @author sks.lwei
 */
public interface AccountBookBillService {

    /**
     * 获取账单列表
     *
     * @param page 分页
     * @return 账单
     */
    IPage<AccountBookBill> pageBillByType(IPage<AccountBookBill> page, Wrapper<AccountBookBill> wrapper);

    /**
     *  根据时间查询账单
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @return 账单
     */
    BillResponseVO getAccountBookBillAll(Date beginTime, Date endTime);

    /**
     * 查询账单详情
     *
     * @param uuid uuid
     * @return {@link BillResponseVO}
     */
    BillResponseVO getAccountBookBill(String uuid);

    /**
     * 个人账单查看
     * @param accountUuid 用户uuid
     * @return 账单
     */
    AccountBookBill getBillByAccount(String accountUuid);

    /**
     * 账单生成 总的 根据日期生成
     * @param beginTime 开始时间
     * @param endTime 结束时间
     */
    void creatAccountBookBillAll(Date beginTime, Date endTime);

    /**
     * 改为系统自动生成
     * 日常账单生成
     *
     * @param endTime 结束时间
     */
    void creatAccountBookBill(Date endTime);

    /**
     * 展示日常账单
     * @return 账单
     */
    BillResponseVO showAccountBookBillDaily();


    /**
     * 账单清算
     * @param uuid  uuid
     */
    void killBill(String uuid);

    /**
     * 删除账单
     * @param uuid uuid
     */
    void removeBill(String uuid);


}
